package io.github.wppli.trigger.api;

import io.github.wppli.trigger.api.dto.user_authenticate.*;
import io.github.wppli.types.model.Response;

/**
 * 用户认证相关
 * @author li--jiaqiang 2024−12−23
 */
public interface IUserAuthenticateService {

    /**
     * 登录
     * @param signInRequest
     * .username 用户名
     * .contactInformation 联系方式 电话 or 邮箱
     * .password 密码
     * .code true: 验证码登录， false: 密码登录
     */
    Response<SingInResponse> signIn(SignInRequest signInRequest);


    /**
     * 注册
     * @param registerRequest
     * .contactInformation 联系方式 电话 or 邮箱
     * .password 密码
     * .code 验证码
     */
    Response<RegisterResponse> register(RegisterRequest registerRequest);

    /**
     * 生成验证码
     * @param contactInformation 联系方式 电话 or 邮箱
     * @param type 类型
     * @return 验证码
     */
    Response<String> genCode(String contactInformation, Integer type);

    /**
     * 设置密码
     */
    Response<String> setPassword(SetPasswordRequest setPasswordRequest);

    /**
     * 绑定邮箱
     */
    Response<String> bindEmail(BindEmailRequest bindEmailRequest, String authorization);
}